不会用Stata做描述性统计表?so easy!
本文作者:李嘉琪,中南财经政法大学金融学院
本文编辑:谭 可
技术总编:戴 雯
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程、Stata基础课程、Stata进阶课程、Stata文本分析、正则表达式、网络爬虫、基本字符串课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~此外,凭任意一篇推文集够50个赞,购买爬虫俱乐部的主要课程,即可获得50元的优惠,大家赶快行动起来吧~
描述性统计表格是大家在日常工作和学习中必不可少的一类工具,一般来讲,当我们拿到一份经过清洗的数据,就会对新数据进行描述性统计分析,从而进行更深入的研究。描述性统计表格提供了对于数据最初的认知,如数据的集中趋势、分散程度以及频数分布等,常用的指标为频数,平均值,中位数,方差、标准差等。我们有时需要在论文中用表格的形式呈现出全样本、实验组、控制组的数据特征。这时,我们可以使用stata进行操作,下面小编就以Stata自带的auto数据集为例,用tabstat命令和putdocx命令为大家展示一下如何输出描述性统计表格吧!
在auto数据集中,变量foreign里已经根据汽车是否是国产对数据进行了分组。其中,国产汽车取值为0,进口汽车取值为1。我们把国产汽车设置为控制组group = 0,把进口汽车设置为实验组group = 1。程序如下:
clear all
sysuse auto,clear
gen group = 0
replace group = 1 if foreign == 1
选项名 | 说明 |
---|---|
sd | 标准差 |
mean | 平均值 |
semean | 标准误差平均值 |
median | 中位数 |
count /n | 非缺失的观测值个数 |
sum | 求和 |
range | 极差(范围误差、全距) |
min | 最小值 |
max | 最大值 |
cv | 变异系数 |
skewness | 偏度 |
kurtosis | 峰度 |
iqr | 四分位距(四分差) |
p1 | 第1百分位数 |
p5 | 第5百分位数 |
p10 | 第10百分位数 |
p25 | 第25百分位数 |
p50 | 第50百分位 |
p75 | 第75百分位数 |
p99 | 第99百分位数 |
variance | 方差 |
学会了tabstat的基本用法,我们就可以用输出控制组,实验组,全样本组的某些变量的统计信息。如果想要展示三个组中price、 wei、 len、 mpg、 rep78这些变量的样本量,平均值,标准差,中位数,就需要执行如下程序:
tabstat price wei len mpg rep78,by(group) ///
stats(n mean sd p50) c(s) f(%6.2f) save
return list
执行以上程序之后,通过return list命令,我们可以看到内存中的三个矩阵,分别叫做r(Stat1),r(Stat2),r(StatTotal),分别代表控制组,实验组和全样本组的统计数据。如图所示:
matrix A = r(Stat1)
matrix B = r(Stat2)
matrix C = r(StatTotal)
matlist A
matlist B
matlist C
mat A = A'
mat B = B'
mat C = C'
matlist A
mat ALL =[C,A,B]
matlist ALL
我们接下来要做的,自然就是把矩阵输出到word文档中,再合并单元格,调整格式啦。putdocx table命令深受广大用户的喜爱,该命令解决了以往输出表格至docx文件操作繁琐的问题,能够直接将内存中的数据、描述性统计量或回归预测结果以表格的形式输出到docx文件中,优化了用户体验。其中,putdocx table命令引入了一个函数——matrix(),可以把矩阵输出到word文档中。其基本用法如下:
putdocx table tablename = matrix(matname) [, nformat(%fmt) rownames colnames
table_options]
table options有几个常用的选择:
选项width()用于指定表格宽度;选项layout()用来调整表格的列宽,包括fixed、autofitwindow、autofitcontents三种样式,fixed表示所有列宽相同,autofitwindow表示根据窗口大小自动调整列宽,autofitcontents表示根据表格内容自动调整列宽,默认根据窗口大小自动调整列宽(即autofitwindow);选项halign()用来设置表格的水平对齐方式,可以选择left(左对齐)、right(右对齐)或center(居中对齐),默认为左对齐(即left)。
(1)首先,我们生成一个横向的A4纸版式的word文档,用matrix函数,把矩阵输出到word中,本例中的程序如下:
putdocx clear
putdocx begin, pagesize(A4) landscape
putdocx table t1 = matrix(ALL), nformat(%8.2f) rownames colnames halign(center) layout(autofitcontents)
(2)调整表格的具体内容
调整表格的具体内容用到的是如下选项:tablename(i, j)表示表格的第i行,第j列,例如tablename(1, .)表示第一行,tablename(1, 1)表示第一行第一列,tablename(., .)表示全部表格。rowspan()表示垂直合并单元格;colsapan()表示横向合并单元格;addrows(# [, before|after])在指定位置前或者后添加#行;addcols(# [, before|after])在指定位置前或者后添加#列;drop表示删除指定的行或列;halign()设置水平对齐方式;valign()设置垂直对齐方式;font()设置字体字号和颜色。
对于本例,首先用addrows()选项,在第一行前添加两行。
然后,把第一行的全部13列合并,并命名为“描述性统计”。
接着,把第二行的第二列到第五列合并,命名为“全样本”;把原来的第六列到第九列合并,命名为“控制组”;把原来的第十列到第十三列合并,命名为“实验组”。值得注意的是,由于程序是一步一步运行的,所以原来的第二行第六列在上一步程序运行过后,变成了第二行第二列t1(2,3),原来的第二行第十列变成了第二行第四列t1(2,4)。
最后,把第三行第一列命名为“变量名称”;把表格样式调为水平居中对齐,宋体;保存为table.docx文件。
具体的程序如下:
putdocx table t1(1, .),addrows(2,before)
putdocx table t1(1, 1) = ("描述性统计"),colspan(13)
putdocx table t1(2, 2) = ("全样本"),colspan(4)
putdocx table t1(2, 3) = ("控制组"),colspan(4)
putdocx table t1(2, 4) = ("实验组"),colspan(4)
putdocx table t1(3, 1) = ("变量名称")
putdocx table t1(., .),halign(center) font("宋体")
putdocx save table.docx,replace
shellout table.docx
clear all
sysuse auto,clear
gen group = 0
replace group = 1 if foreign == 1
tabstat price wei len mpg rep78,by(group) ///
stats(n mean sd p50) c(s) f(%6.2f) save
return list
matrix A = r(Stat1)
matrix B = r(Stat2)
matrix C = r(StatTotal)
matlist A
matlist B
matlist C
mat A = A'
mat B = B'
mat C = C'
matlist A
mat ALL =[C,A,B]
matlist ALL
putdocx clear
putdocx begin, pagesize(A4) landscape
putdocx table t1 = matrix(ALL), nformat(%8.2f) rownames colnames halign(center) layout(autofitcontents)
putdocx table t1(1,.),addrows(2,before)
putdocx table t1(1,1) = ("描述性统计"),colspan(13)
putdocx table t1(2,2) = ("全样本"),colspan(4)
putdocx table t1(2,3) = ("控制组"),colspan(4)
putdocx table t1(2,4) = ("实验组"),colspan(4)
putdocx table t1(3,1) = ("变量名称")
putdocx table t1(., .),halign(center) font("宋体")
putdocx save table.docx,replace
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
丰沛之地:备足姨妈巾
过年啦,用Python绘制一幅属于你的春联吧!
登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅【基础篇】查找并输出子字符串的定位
Stata中的小清新命令——添加观测值
PCA(主成分分析法)降维——Python实现
超好用的事件研究法
如何绘制任泽平《鼓励生育基金》的几幅图
Python 第六天——字符串
findname——想要什么找什么
Python字符串之“分分合合”
PDF转docx可批量操作?——wordconvert的小技巧
考研之后,文科生需以“do”躬“do”!
手绘五星兴家国——用Stata绘制五星红旗
Seminar丨董事会的性别多样化和企业创新:来自国际的证据Python与数据库交互——窗口函数
Stata之post命令——数据邮递爬虫俱乐部成员的Stata学习经验分享来啦!
Seminar丨2002年萨班斯·奥克斯利法案的经济后果我几乎画出了“隔壁三哥”家的国旗
Python基础——三大数字类型,你都了解吗?如何用Stata绘制带指向性箭头标注的图像
Seminar丨荐仆贷款——19世纪中国的信任辅助贷款 【技能篇】多进程队列间通信
Seminar丨公司董事会的人才增长:来自中国的证据
正则表达式--懒惰模式
爬完独立董事的年薪,我的眼镜跌破了!识别旅游“照骗”——看风景名胜是否名副其实主成分分析的Python实现正则表达式--贪婪模式
Seminar丨谁更重要:高管股权薪酬与财务报告欺诈DOS能量,超乎你想象!爬虫实战丨走进哈利波特的魔法世界
数据集合并的新路子-frlink命令
Seminar丨附近的公司:利用卫星图像研究本地信息优势关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。